๋ถ์ฐ ์์คํ ์์ ์ต์ข ์ ์ผ๊ด์ฑ๊ณผ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ์ฐจ์ด์ , ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฏธ์น๋ ์ํฅ ๋ฐ ํ์์ ๋ง๋ ์ฌ๋ฐ๋ฅธ ๋ชจ๋ธ ์ ํ ๋ฐฉ๋ฒ์ ํ์ํฉ๋๋ค.
๋ฐ์ดํฐ ์ผ๊ด์ฑ: ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์ต์ข ์ ์ผ๊ด์ฑ ๋ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ
๋ถ์ฐ ์์คํ , ํนํ ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ๋ํ๋ ์์คํ ์ ์ธ๊ณ์์๋ ์ฌ๋ฌ ๋ ธ๋๋ ์ง์ญ์ ๊ฑธ์ณ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ๋ค๋ฅธ ์๋ฒ์ ๋ณต์ ๋ ๋, ๋ชจ๋ ์ฌ๋ณธ์ด ์ต์ ์ํ์ด๊ณ ๋๊ธฐํ๋๋๋ก ๋ณด์ฅํ๋ ๊ฒ์ ๋ณต์กํ ๊ณผ์ ๊ฐ ๋ฉ๋๋ค. ๋ฐ๋ก ์ด ์ง์ ์์ ์ต์ข ์ ์ผ๊ด์ฑ(eventual consistency)๊ณผ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ(strong consistency)์ด๋ผ๋ ๊ฐ๋ ์ด ๋ฑ์ฅํฉ๋๋ค. ๊ฐ ๋ชจ๋ธ์ ๋ฏธ๋ฌํ ์ฐจ์ด๋ฅผ ์ดํดํ๋ ๊ฒ์ ๋ณต์๋ ฅ ์๊ณ , ์ฑ๋ฅ์ด ๋ฐ์ด๋๋ฉฐ, ์ ๋ขฐํ ์ ์๋ ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
๋ฐ์ดํฐ ์ผ๊ด์ฑ์ด๋ ๋ฌด์์ธ๊ฐ?
๋ฐ์ดํฐ ์ผ๊ด์ฑ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์คํ ๋ฆฌ์ง ์์คํ ์ ์ฌ๋ฌ ์ฌ๋ณธ ๋๋ ์ธ์คํด์ค์ ๊ฑธ์ณ ๋ฐ์ดํฐ ๊ฐ์ด ์ผ์นํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋จ์ผ ๋ ธ๋ ์์คํ ์์๋ ์ผ๊ด์ฑ์ ๊ด๋ฆฌํ๊ธฐ๊ฐ ๋น๊ต์ ๊ฐ๋จํฉ๋๋ค. ํ์ง๋ง ๋ฐ์ดํฐ๊ฐ ์ง๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋ ์ฌ๋ฌ ์๋ฒ์ ๊ฑธ์ณ ์๋ ๋ถ์ฐ ์์คํ ์์๋ ๋คํธ์ํฌ ์ง์ฐ, ์ ์ฌ์ ์ธ ์ฅ์ , ๊ทธ๋ฆฌ๊ณ ๊ณ ๊ฐ์ฉ์ฑ์ ๋ํ ํ์์ฑ ๋๋ฌธ์ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๊ฒ์ด ํจ์ฌ ๋ ์ด๋ ค์์ง๋๋ค.
๊ฐ๋ ฅํ ์ผ๊ด์ฑ: ์ต๊ณ ์ ํ์ค
๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ์ฆ๊ฐ์ ์ธ ์ผ๊ด์ฑ ๋๋ ์ ํ์ฑ(linearizability)์ด๋ผ๊ณ ๋ ์๋ ค์ ธ ์์ผ๋ฉฐ, ๊ฐ์ฅ ์๊ฒฉํ ํํ์ ์ผ๊ด์ฑ์ ๋๋ค. ์ด๋ ์ฝ๊ธฐ ์์ฒญ์ด ์ด๋ค ๋ ธ๋๋ก ํฅํ๋ ์๊ด์์ด ๋ชจ๋ ์ฝ๊ธฐ ์์ ์ด ๊ฐ์ฅ ์ต๊ทผ์ ์ฐ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋๋ก ๋ณด์ฅํฉ๋๋ค. ๋ณธ์ง์ ์ผ๋ก, ์ด๋ ๋จ์ผํ๊ณ ๊ถ์ ์๋ ์ง์ค์ ์์ฒ์ด ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํฉ๋๋ค.
๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ํน์ง:
- ์ฆ๊ฐ์ ์ธ ๊ฐ์์ฑ: ์ฐ๊ธฐ ์์ ์ ๋ชจ๋ ๋ ธ๋์์ ์ดํ์ ๋ชจ๋ ์ฝ๊ธฐ ์์ ์ ์ฆ์ ํ์๋ฉ๋๋ค.
- ์์ฐจ์ ์์ ์ง์ : ์์ ์ ํน์ ํ๊ณ ์ ์๋ ์์๋ก ์คํ๋์ด ๋ฐ์ดํฐ ์์ ๊ธฐ๋ก์ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ์์์ฑ: ํธ๋์ญ์ ์ ์์์ ์ด์ด์, ์์ ํ ์ฑ๊ณตํ๊ฑฐ๋ ์์ ํ ์คํจํ๋ฉฐ ๋ถ๋ถ์ ์ธ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
ACID ์์ฑ๊ณผ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ:
๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ์ข ์ข ACID(์์์ฑ, ์ผ๊ด์ฑ, ๊ณ ๋ฆฝ์ฑ, ์ง์์ฑ) ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋์ญ์ ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค. ACID ์์ฑ์ ๋์ ์์ ๋ฐ ์ ์ฌ์ ์ฅ์ ์ํฉ์์๋ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
๊ฐ๋ ฅํ ์ผ๊ด์ฑ ์์คํ ์ ์:
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(์: PostgreSQL, MySQL): ์ ํต์ ์ผ๋ก ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํธ๋์ญ์ , ์ ๊ธ ๋ฉ์ปค๋์ฆ ๋ฐ ๋ณต์ ์ ๋ต์ ์ฌ์ฉํ์ฌ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ์ฐ์ ์ํด ์์ต๋๋ค.
- ๋ถ์ฐ ํฉ์ ์๊ณ ๋ฆฌ์ฆ(์: Raft, Paxos): ์ด๋ฌํ ์๊ณ ๋ฆฌ์ฆ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ๋ถ์ฐ ์์คํ ์ด ๋จ์ผํ๊ณ ์ผ๊ด๋ ์ํ์ ํฉ์ํ๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ด๋ค์ ์ข ์ข ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ๊ฐ์ถ ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ์ฅ์ :
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ: ๋ฐ์ดํฐ๊ฐ ํญ์ ์ ํํ๊ณ ์ ๋ขฐํ ์ ์์์ ๋ณด์ฅํฉ๋๋ค.
- ๋จ์ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ: ๊ฐ๋ฐ์๋ ์์คํ ์ด ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๊ฐ์ ํ ๊ฒ์ด๋ผ๊ณ ์ ๋ขฐํ ์ ์์ด ๊ฐ๋ฐ ๊ณผ์ ์ด ๋จ์ํ๋ฉ๋๋ค.
- ๋ ์ฌ์ด ์ถ๋ก : ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ์์ธก ๊ฐ๋ฅํ ๋์์ ์์คํ ์ ์ํ๋ฅผ ์ถ๋ก ํ๊ณ ๋ฌธ์ ๋ฅผ ๋๋ฒ๊น ํ๋ ๊ฒ์ ๋ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ๋จ์ :
- ๋ ๋์ ์ง์ฐ ์๊ฐ: ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ๋ฌ์ฑํ๋ ค๋ฉด ์ฌ๋ฌ ๋ ธ๋์ ๊ฑธ์ณ ์ฐ๊ธฐ ์์ ์ ์กฐ์ ํด์ผ ํ๋ฏ๋ก, ํนํ ์ง๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋ ์์คํ ์์๋ ์๋นํ ์ง์ฐ ์๊ฐ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์์ ์ ๋๊ธฐํํด์ผ ํ๋ ํ์์ฑ์ด ์ค๋ฒํค๋๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
- ๊ฐ์๋ ๊ฐ์ฉ์ฑ: ๋ ธ๋๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ฉด, ์์คํ ์ ๋ ธ๋๊ฐ ๋ณต๊ตฌ๋ ๋๊น์ง ์ฐ๊ธฐ๋ ์ฝ๊ธฐ๋ฅผ ์ฐจ๋จํด์ผ ํ ์ ์์ด ๊ฐ์ฉ์ฑ์ด ๊ฐ์ํฉ๋๋ค. ๋จ์ผ ์ฅ์ ์ง์ (single point of failure)์ด ์ ์ฒด ์์คํ ์ ์ค๋จ์ํฌ ์ ์์ต๋๋ค.
- ํ์ฅ์ฑ ๋ฌธ์ : ๋ง์ ์์ ๋ ธ๋์ ๊ฑธ์ณ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๊ฒ์ ์ด๋ ค์ธ ์ ์์ผ๋ฉฐ ์์คํ ์ ํ์ฅ์ฑ์ ์ ํํ ์ ์์ต๋๋ค.
์ต์ข ์ ์ผ๊ด์ฑ: ํธ๋ ์ด๋์คํ์ ์์ฉ
์ต์ข ์ ์ผ๊ด์ฑ์ ๋ ์ฝํ ํํ์ ์ผ๊ด์ฑ์ผ๋ก, ํน์ ๋ฐ์ดํฐ ํญ๋ชฉ์ ์๋ก์ด ์ ๋ฐ์ดํธ๊ฐ ์ด๋ฃจ์ด์ง์ง ์์ผ๋ฉด ๊ฒฐ๊ตญ ํด๋น ํญ๋ชฉ์ ๋ํ ๋ชจ๋ ์ ๊ทผ์ด ๋ง์ง๋ง์ผ๋ก ์ ๋ฐ์ดํธ๋ ๊ฐ์ ๋ฐํํ ๊ฒ์ ๋ณด์ฅํฉ๋๋ค. ์ด "๊ฒฐ๊ตญ"์ด๋ผ๋ ์๊ฐ์ ์์คํ ๊ณผ ์ํฌ๋ก๋์ ๋ฐ๋ผ ๋งค์ฐ ์งง์ ์๋(์ด ๋จ์) ์๊ณ ๋ ๊ธธ ์๋(๋ถ ๋๋ ์๊ฐ ๋จ์) ์์ต๋๋ค. ํต์ฌ ์์ด๋์ด๋ ์ฆ๊ฐ์ ์ธ ์ผ๊ด์ฑ๋ณด๋ค ๊ฐ์ฉ์ฑ๊ณผ ์ฑ๋ฅ์ ์ฐ์ ์ํ๋ ๊ฒ์ ๋๋ค.
์ต์ข ์ ์ผ๊ด์ฑ์ ํน์ง:
- ์ง์ฐ๋ ๊ฐ์์ฑ: ์ฐ๊ธฐ ์์ ์ด ์ดํ์ ๋ชจ๋ ์ฝ๊ธฐ ์์ ์ ์ฆ์ ๋ณด์ด์ง ์์ ์ ์์ต๋๋ค. ๋ค๋ฅธ ๋ ธ๋๊ฐ ์๋ก ๋ค๋ฅธ ๋ฒ์ ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง ์ ์๋ ๊ธฐ๊ฐ์ด ์กด์ฌํฉ๋๋ค.
- ๋น๋๊ธฐ ๋ณต์ : ๋ฐ์ดํฐ๋ ์ผ๋ฐ์ ์ผ๋ก ๋น๋๊ธฐ์ ์ผ๋ก ๋ณต์ ๋์ด ๋ชจ๋ ๋ณต์ ๋ณธ์ด ์ ๋ฐ์ดํธ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ฐ๊ธฐ ์์ ์ด ์ ์ํ๊ฒ ํ์ธ๋ ์ ์์ต๋๋ค.
- ์ถฉ๋ ํด๊ฒฐ: ์ผ๊ด์ฑ์ด ๋ฌ์ฑ๋๊ธฐ ์ ์ ๋ฐ์ํ ์ ์๋ ์ถฉ๋ํ๋ ์ ๋ฐ์ดํธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ฉ์ปค๋์ฆ์ด ํ์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ํ์์คํฌํ, ๋ฒ์ ๋ฒกํฐ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ณ ๋ก์ง์ด ํฌํจ๋ ์ ์์ต๋๋ค.
BASE ์์ฑ๊ณผ ์ต์ข ์ ์ผ๊ด์ฑ:
์ต์ข ์ ์ผ๊ด์ฑ์ ์ข ์ข BASE(Basically Available, Soft state, Eventually consistent) ์์คํ ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค. BASE๋ ์๊ฒฉํ ์ผ๊ด์ฑ๋ณด๋ค ๊ฐ์ฉ์ฑ๊ณผ ๋ด๊ฒฐํจ์ฑ์ ์ฐ์ ์ํฉ๋๋ค.
์ต์ข ์ ์ผ๊ด์ฑ ์์คํ ์ ์:
- NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค(์: Cassandra, DynamoDB): ๋ง์ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋์ ๊ฐ์ฉ์ฑ๊ณผ ํ์ฅ์ฑ์ ๋ฌ์ฑํ๊ธฐ ์ํด ์ต์ข ์ ์ผ๊ด์ฑ์ ์ผ๋์ ๋๊ณ ์ค๊ณ๋์์ต๋๋ค.
- DNS(๋๋ฉ์ธ ์ด๋ฆ ์์คํ ): DNS ๋ ์ฝ๋๋ ์ผ๋ฐ์ ์ผ๋ก ๋น๋๊ธฐ์ ์ผ๋ก ์ ํ๋๋ฏ๋ก ์ ๋ฐ์ดํธ๊ฐ ๋ชจ๋ DNS ์๋ฒ์ ๋ฐ์๋๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
- ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN): CDN์ ์ฑ๋ฅ ํฅ์์ ์ํด ์ฌ์ฉ์์๊ฒ ๋ ๊ฐ๊น์ด ๊ณณ์ ์ฝํ ์ธ ๋ฅผ ์บ์ํฉ๋๋ค. ์ฝํ ์ธ ์ ๋ฐ์ดํธ๋ ์ผ๋ฐ์ ์ผ๋ก CDN ์ฃ์ง๋ก ๋น๋๊ธฐ์ ์ผ๋ก ์ ํ๋ฉ๋๋ค.
์ต์ข ์ ์ผ๊ด์ฑ์ ์ฅ์ :
- ๋์ ๊ฐ์ฉ์ฑ: ์ผ๋ถ ๋ ธ๋๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ์๋ ์์คํ ์ด ๊ณ์ ์๋ํ ์ ์์ต๋๋ค. ๋ชจ๋ ๋ณต์ ๋ณธ์ ๋๋ฌํ ์ ์๋๋ผ๋ ์ฐ๊ธฐ ์์ ์ ์๋ฝํ ์ ์์ต๋๋ค.
- ๋ฎ์ ์ง์ฐ ์๊ฐ: ๋ชจ๋ ๋ณต์ ๋ณธ์ด ์ ๋ฐ์ดํธ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์ผ๋ฏ๋ก ์ฐ๊ธฐ ์์ ์ ์ ์ํ๊ฒ ํ์ธํ ์ ์์ต๋๋ค.
- ํ์ฅ์ฑ: ์ต์ข ์ ์ผ๊ด์ฑ์ ์ผ๊ด์ฑ์ ํฐ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์์ผ๋ฏ๋ก ์์คํ ํ์ฅ์ด ๋ ์ฝ์ต๋๋ค.
์ต์ข ์ ์ผ๊ด์ฑ์ ๋จ์ :
- ๋ฐ์ดํฐ ๋ถ์ผ์น: ์ฝ๊ธฐ ์์ ์ด ์ค๋๋(stale) ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ์ฌ ๋ถ์ผ์น์ ์ ์ฌ์ ์ธ ์ฌ์ฉ์ ํผ๋์ ์ด๋ํ ์ ์์ต๋๋ค.
- ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง: ๊ฐ๋ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์์ ์ ์ฌ์ ์ธ ์ถฉ๋๊ณผ ๋ถ์ผ์น๋ฅผ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ๋ ์ ๊ตํ ์ถฉ๋ ํด๊ฒฐ ์ ๋ต์ด ํ์ํฉ๋๋ค.
- ์ด๋ ค์ด ๋๋ฒ๊น : ์์คํ ์ํ๋ฅผ ์์ธกํ๊ธฐ ์ด๋ ค์ธ ์ ์์ผ๋ฏ๋ก ์ต์ข ์ ์ผ๊ด์ฑ๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ๋๋ฒ๊น ํ๋ ๊ฒ์ด ์ด๋ ค์ธ ์ ์์ต๋๋ค.
CAP ์ด๋ก : ํผํ ์ ์๋ ํธ๋ ์ด๋์คํ
CAP ์ด๋ก ์ ๋ถ์ฐ ์์คํ ์ด ๋ค์ ์ธ ๊ฐ์ง ์์ฑ์ ๋์์ ๋ชจ๋ ๋ณด์ฅํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค๊ณ ๋งํฉ๋๋ค:
- ์ผ๊ด์ฑ(Consistency, C): ๋ชจ๋ ์ฝ๊ธฐ ์์ ์ ๊ฐ์ฅ ์ต๊ทผ์ ์ฐ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๊ฑฐ๋ ์ค๋ฅ๋ฅผ ๋ฐ์ต๋๋ค.
- ๊ฐ์ฉ์ฑ(Availability, A): ๋ชจ๋ ์์ฒญ์ (์ค๋ฅ๊ฐ ์๋) ์๋ต์ ๋ฐ์ง๋ง, ๊ทธ ์๋ต์ด ๊ฐ์ฅ ์ต๊ทผ์ ์ฐ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ํฌํจํ๋ค๋ ๋ณด์ฅ์ ์์ต๋๋ค.
- ๋ถํ ํ์ฉ์ฑ(Partition Tolerance, P): ๋คํธ์ํฌ ์ฅ์ ๋ก ์ธํ ์์์ ๋ถํ ์๋ ๋ถ๊ตฌํ๊ณ ์์คํ ์ด ๊ณ์ ์๋ํฉ๋๋ค.
์ค์ ๋ก ๋ถ์ฐ ์์คํ ์ ๋คํธ์ํฌ ๋ถํ ์ด ๋ฐ์ํ์ ๋ ์ผ๊ด์ฑ๊ณผ ๊ฐ์ฉ์ฑ ์ฌ์ด์์ ์ ํํด์ผ ํฉ๋๋ค. ์ด๋ ์์คํ ์ด ์ผ๋ฐ์ ์ผ๋ก CA(์ผ๊ด์ฑ๊ณผ ๊ฐ์ฉ์ฑ, ๋ถํ ํ์ฉ์ฑ ํฌ์), AP(๊ฐ์ฉ์ฑ๊ณผ ๋ถํ ํ์ฉ์ฑ, ์ผ๊ด์ฑ ํฌ์), ๋๋ CP(์ผ๊ด์ฑ๊ณผ ๋ถํ ํ์ฉ์ฑ, ๊ฐ์ฉ์ฑ ํฌ์)๋ก ๋ถ๋ฅ๋ ์ ์์์ ์๋ฏธํฉ๋๋ค. ๋ถํ ํ์ฉ์ฑ์ ์ผ๋ฐ์ ์ผ๋ก ๋ถ์ฐ ์์คํ ์ ์๊ตฌ ์ฌํญ์ด๋ฏ๋ก, ์ค์ ์ ํ์ ์ผ๊ด์ฑ์ ์ฐ์ ์ํ ๊ฒ์ธ๊ฐ ๊ฐ์ฉ์ฑ์ ์ฐ์ ์ํ ๊ฒ์ธ๊ฐ๋ก ๊ท๊ฒฐ๋ฉ๋๋ค. ๋๋ถ๋ถ์ ํ๋ ์์คํ ์ '์ต์ข ์ ์ผ๊ด์ฑ' ๊ฒฝ๋ก์ธ AP๋ฅผ ์ ํธํฉ๋๋ค.
์ฌ๋ฐ๋ฅธ ์ผ๊ด์ฑ ๋ชจ๋ธ ์ ํํ๊ธฐ
์ต์ข ์ ์ผ๊ด์ฑ๊ณผ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ ์ฌ์ด์ ์ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ๋ชจ๋ ๊ฒฝ์ฐ์ ์ ์ฉ๋๋ ์ ๋ต์ ์์ต๋๋ค.
๊ณ ๋ คํด์ผ ํ ์์:
- ๋ฐ์ดํฐ ๋ฏผ๊ฐ๋: ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ธ์ต ๊ฑฐ๋๋ ์๋ฃ ๊ธฐ๋ก๊ณผ ๊ฐ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ด ํ์ํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ ์์์ด๋ ์์ค์ ์ํฅ์ ๊ณ ๋ คํ์ญ์์ค.
- ์ฝ๊ธฐ/์ฐ๊ธฐ ๋น์จ: ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฝ๊ธฐ ์ค์ฌ(read-heavy)์ด๋ผ๋ฉด, ๋ ๋์ ์ฝ๊ธฐ ์ฑ๋ฅ์ ํ์ฉํ๋ ์ต์ข ์ ์ผ๊ด์ฑ์ด ์ข์ ์ ํ์ผ ์ ์์ต๋๋ค. ์ฐ๊ธฐ ์ค์ฌ(write-heavy) ์ ํ๋ฆฌ์ผ์ด์ ์ ์ถฉ๋์ ํผํ๊ธฐ ์ํด ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค.
- ์ง๋ฆฌ์ ๋ถํฌ: ์ง๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ, ์ฅ๊ฑฐ๋ฆฌ์ ๊ฑธ์น ์ฐ๊ธฐ ์กฐ์ ๊ณผ ๊ด๋ จ๋ ๋์ ์ง์ฐ ์๊ฐ์ ํผํ ์ ์์ผ๋ฏ๋ก ์ต์ข ์ ์ผ๊ด์ฑ์ด ๋ ์ค์ฉ์ ์ผ ์ ์์ต๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ๋ณต์ก์ฑ: ์ต์ข ์ ์ผ๊ด์ฑ์ ์ ์ฌ์ ์ธ ์ถฉ๋๊ณผ ๋ถ์ผ์น๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ํ์๋ก ํฉ๋๋ค.
- ์ฌ์ฉ์ ๊ฒฝํ: ์ ์ฌ์ ์ธ ๋ฐ์ดํฐ ๋ถ์ผ์น๊ฐ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ฏธ์น๋ ์ํฅ์ ๊ณ ๋ คํ์ญ์์ค. ์ฌ์ฉ์๊ฐ ๊ฐ๋ ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ ๊ฒ์ ์ฉ๋ฉํ ์ ์์ต๋๊น?
์ฌ์ฉ ์ฌ๋ก ์์:
- ์ ์ ์๊ฑฐ๋ ์ํ ์นดํ๋ก๊ทธ: ๊ฐ๋ ๋ฐ์ํ๋ ๋ถ์ผ์น๊ฐ ์ฌ๊ฐํ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์ผ๋ฏ๋ก ์ํ ์นดํ๋ก๊ทธ์๋ ์ต์ข ์ ์ผ๊ด์ฑ์ด ์ข ์ข ํ์ฉ๋ฉ๋๋ค. ๋์ ๊ฐ์ฉ์ฑ๊ณผ ์๋ต์ฑ์ด ๋ ์ค์ํฉ๋๋ค.
- ์ํ ๊ฑฐ๋: ๋์ด ์ ํํ๊ฒ ์ด์ฒด๋๊ณ ๊ณ์ข ์์ก์ด ๋ง๋๋ก ๋ณด์ฅํ๊ธฐ ์ํด ์ํ ๊ฑฐ๋์๋ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ด ํ์์ ์ ๋๋ค.
- ์์ ๋ฏธ๋์ด ํผ๋: ์๋ก์ด ๊ฒ์๋ฌผ์ ๋ณด๋ ๋ฐ ๊ฐ๋ ์ง์ฐ์ด ๋ฐ์ํ๋ ๊ฒ์ ํ์ฉ๋๋ฏ๋ก ์์ ๋ฏธ๋์ด ํผ๋์๋ ์ผ๋ฐ์ ์ผ๋ก ์ต์ข ์ ์ผ๊ด์ฑ์ด ์ฌ์ฉ๋ฉ๋๋ค. ์์คํ ์ ๋ฐฉ๋ํ ๊ท๋ชจ์ ์ ๋ฐ์ดํธ๋ฅผ ์ ์ํ๊ฒ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
- ์ฌ๊ณ ๊ด๋ฆฌ: ์ ํ์ ์ฌ๊ณ ์ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๊ณ ๊ฐ์น, ํ์ ์๋ ํ๋ชฉ์ ๊ฒฝ์ฐ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ด ์ ํธ๋ ์ ์์ต๋๋ค. ๋ ์ค์ํ ํ๋ชฉ์ ๊ฒฝ์ฐ ์ต์ข ์ ์ผ๊ด์ฑ์ผ๋ก ์ถฉ๋ถํ ์ ์์ต๋๋ค.
ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทผ๋ฒ: ๊ท ํ ์ฐพ๊ธฐ
์ด๋ค ๊ฒฝ์ฐ์๋ ์ต์ข ์ ์ผ๊ด์ฑ๊ณผ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ์์๋ฅผ ๊ฒฐํฉํ ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทผ๋ฒ์ด ์ต์์ ํด๊ฒฐ์ฑ ์ผ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธ์ต ๊ฑฐ๋์ ๊ฐ์ ์ค์ํ ์์ ์๋ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ์ฌ์ฉํ๊ณ , ์ฌ์ฉ์ ํ๋กํ ์ ๋ฐ์ดํธ์ ๊ฐ์ ๋ ์ค์ํ ์์ ์๋ ์ต์ข ์ ์ผ๊ด์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ์ด๋ธ๋ฆฌ๋ ์ผ๊ด์ฑ์ ์ํ ๊ธฐ์ :
- ์ธ๊ณผ์ ์ผ๊ด์ฑ(Causal Consistency): ๊ฐ๋ ฅํ ์ผ๊ด์ฑ๋ณด๋ค๋ ์ฝํ์ง๋ง ์ต์ข ์ ์ผ๊ด์ฑ๋ณด๋ค๋ ๊ฐํ ํํ์ ์ผ๊ด์ฑ์ ๋๋ค. ์ด๋ ์์ A๊ฐ ์์ B์ ์ธ๊ณผ์ ์ผ๋ก ์ ํํ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ฌ๋์ด B๋ณด๋ค A๋ฅผ ๋จผ์ ๋ณธ๋ค๋ ๊ฒ์ ๋ณด์ฅํฉ๋๋ค.
- ์์ ์ ์ฐ๊ธฐ ์ฝ๊ธฐ ์ผ๊ด์ฑ(Read-Your-Writes Consistency): ์ฌ์ฉ์๊ฐ ํญ์ ์์ ์ ์ฐ๊ธฐ๋ฅผ ๋ณผ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ด๋ ์ฌ์ฉ์์ ์ฐ๊ธฐ๊ฐ ์ฒ๋ฆฌ๋ ๋์ผํ ๋ ธ๋๋ก ์ฝ๊ธฐ๋ฅผ ๋ผ์ฐํ ํ์ฌ ๋ฌ์ฑํ ์ ์์ต๋๋ค.
- ์ธ์ ์ผ๊ด์ฑ(Session Consistency): ์ฌ์ฉ์๊ฐ ๋จ์ผ ์ธ์ ๋ด์์ ์ผ๊ด๋ ๋ฐ์ดํฐ ๋ทฐ๋ฅผ ๋ณผ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ์กฐ์ ๊ฐ๋ฅํ ์ผ๊ด์ฑ(Tunable Consistency): ๊ฐ๋ฐ์๊ฐ ๊ฐ ์์ ์ ํ์ํ ์ผ๊ด์ฑ ์์ค์ ์ง์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฐ๊ธฐ ์์ ์ด ์ฑ๊ณต์ผ๋ก ๊ฐ์ฃผ๋๊ธฐ ์ ์ ํน์ ์์ ๋ณต์ ๋ณธ์ผ๋ก๋ถํฐ ํ์ธ์ ์๊ตฌํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ผ๊ด์ฑ ๊ตฌํํ๊ธฐ
๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณํ ๋, ๋ฐ์ดํฐ์ ์ฌ์ฉ์์ ์ง๋ฆฌ์ ๋ถํฌ๋ ์ผ๊ด์ฑ ๋ฌธ์ ์ ๋ ๋ค๋ฅธ ๋ณต์ก์ฑ์ ๋ํฉ๋๋ค. ๋คํธ์ํฌ ์ง์ฐ ๋ฐ ์ ์ฌ์ ์ธ ๋คํธ์ํฌ ๋ถํ ๋ก ์ธํด ๋ชจ๋ ์ง์ญ์ ๊ฑธ์ณ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ๋ฌ์ฑํ๊ธฐ๊ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ ์ผ๊ด์ฑ์ ์ํ ์ ๋ต:
- ๋ฐ์ดํฐ ์ง์ญ์ฑ(Data Locality): ์ง์ฐ ์๊ฐ์ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ๋ฐ์ดํฐ๊ฐ ํ์ํ ์ฌ์ฉ์์๊ฒ ๋ ๊ฐ๊น์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
- ๋ค์ค ์ง์ญ ๋ณต์ (Multi-Region Replication): ๊ฐ์ฉ์ฑ๊ณผ ์ฌํด ๋ณต๊ตฌ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ์ฌ๋ฌ ์ง์ญ์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํฉ๋๋ค.
- ์ถฉ๋ ํด๊ฒฐ ๋ฉ์ปค๋์ฆ: ๋ค๋ฅธ ์ง์ญ ๊ฐ์ ๋ฐ์ํ ์ ์๋ ์ถฉ๋ํ๋ ์ ๋ฐ์ดํธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๊ฒฌ๊ณ ํ ์ถฉ๋ ํด๊ฒฐ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํฉ๋๋ค.
- ์ง๋ฆฌ์ ํํฐ์ ๋(Geo-Partitioning): ์ง๋ฆฌ์ ์ง์ญ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํ์ฌ ๊ฐ ์ง์ญ์ด ๋น๊ต์ ๋ ๋ฆฝ์ ์ผ๋ก ์๋ํ ์ ์๋๋ก ํฉ๋๋ค.
- ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN): CDN์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ ๊ฐ๊น์ด ์ฝํ ์ธ ๋ฅผ ์บ์ํ๊ณ ์๋ณธ ์๋ฒ์ ๋ถํ๋ฅผ ์ค์ ๋๋ค.
์ง๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๊ณ ๋ ค ์ฌํญ:
- ์ง์ฐ ์๊ฐ: ๋น์ ์๋๋ ์ง๋ฆฌ์ ์ผ๋ก ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋ ๊ฐ์ ํต์ ์ง์ฐ ์๊ฐ์ ๊ทผ๋ณธ์ ์ธ ํ๊ณ๋ฅผ ๋ถ๊ณผํฉ๋๋ค.
- ๋คํธ์ํฌ ๋ถ์์ ์ฑ: ์ง๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋ ์์คํ ์์๋ ๋คํธ์ํฌ ๋ถํ ์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋ ๋์ต๋๋ค.
- ๊ท์ ์ค์: ๋ฐ์ดํฐ ์์ฃผ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ ์ ์๋ ์์น๊ฐ ๊ฒฐ์ ๋ ์ ์์ต๋๋ค.
๊ฒฐ๋ก : ์ผ๊ด์ฑ, ๊ฐ์ฉ์ฑ, ์ฑ๋ฅ์ ๊ท ํ ๋ง์ถ๊ธฐ
๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ถ์ฐ ์์คํ , ํนํ ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ค๊ณ์์ ์ค์ํ ๊ณ ๋ ค ์ฌํญ์ ๋๋ค. ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ์ต๊ณ ์์ค์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ๊ณตํ์ง๋ง, ๋ ๋์ ์ง์ฐ ์๊ฐ, ๊ฐ์๋ ๊ฐ์ฉ์ฑ, ํ์ฅ์ฑ ๋ฌธ์ ๋ผ๋ ๋๊ฐ๋ฅผ ์น๋ฅผ ์ ์์ต๋๋ค. ๋ฐ๋ฉด์ ์ต์ข ์ ์ผ๊ด์ฑ์ ๊ฐ์ฉ์ฑ๊ณผ ์ฑ๋ฅ์ ์ฐ์ ์ํ์ง๋ง, ์ ์ฌ์ ์ธ ๋ถ์ผ์น๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ํ์๋ก ํฉ๋๋ค.
์ฌ๋ฐ๋ฅธ ์ผ๊ด์ฑ ๋ชจ๋ธ์ ์ ํํ๋ ๊ฒ์ ๋ฐ์ดํฐ ๋ฏผ๊ฐ๋, ์ฝ๊ธฐ/์ฐ๊ธฐ ๋น์จ, ์ง๋ฆฌ์ ๋ถํฌ ๋ฐ ์ฌ์ฉ์ ๊ฒฝํ๊ณผ ๊ฐ์ ์์๋ฅผ ๊ณ ๋ คํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์๊ตฌ ์ฌํญ์ ์ ์คํ๊ฒ ํ๊ฐํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ๋ง์ ๊ฒฝ์ฐ, ์ต์ข ์ ์ผ๊ด์ฑ๊ณผ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ์์๋ฅผ ๊ฒฐํฉํ ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทผ๋ฒ์ด ์ต์ ์ ํด๊ฒฐ์ฑ ์ผ ์ ์์ต๋๋ค. ๊ด๋ จ๋ ํธ๋ ์ด๋์คํ๋ฅผ ์ดํดํ๊ณ ์ ์ ํ ์ ๋ต์ ๊ตฌํํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ ์ธ๊ณ ์ฌ์ฉ์์ ์๊ตฌ๋ฅผ ์ถฉ์กฑ์ํค๋ ๋ณต์๋ ฅ ์๊ณ , ์ฑ๋ฅ์ด ๋ฐ์ด๋๋ฉฐ, ์ ๋ขฐํ ์ ์๋ ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
๊ถ๊ทน์ ์ผ๋ก ๋ชฉํ๋ ๋น์ฆ๋์ค ์๊ตฌ ์ฌํญ์ ๋ถํฉํ๊ณ ๊ธ์ ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ์ผ๊ด์ฑ, ๊ฐ์ฉ์ฑ, ์ฑ๋ฅ ๊ฐ์ ๊ท ํ์ ๋ง์ถ๋ ๊ฒ์ ๋๋ค. ์ฒ ์ ํ ํ ์คํธ์ ๋ชจ๋ํฐ๋ง์ ์ ํํ ์ผ๊ด์ฑ ๋ชจ๋ธ์ด ์์๋๋ก ์๋ํ๊ณ ์์คํ ์ด ์ฑ๋ฅ ๋ฐ ๊ฐ์ฉ์ฑ ๋ชฉํ๋ฅผ ์ถฉ์กฑํ๋์ง ํ์ธํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
ํต์ฌ ์์ฝ:
- ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ๋ชจ๋ ์ฝ๊ธฐ ์์ ์ ๋ํด ๊ฐ์ฅ ์ต์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฅํฉ๋๋ค.
- ์ต์ข ์ ์ผ๊ด์ฑ์ ์ฆ๊ฐ์ ์ธ ๋ฐ์ดํฐ ์ผ๊ด์ฑ๋ณด๋ค ๊ฐ์ฉ์ฑ๊ณผ ์ฑ๋ฅ์ ์ฐ์ ์ํฉ๋๋ค.
- CAP ์ด๋ก ์ ์ผ๊ด์ฑ, ๊ฐ์ฉ์ฑ, ๋ถํ ํ์ฉ์ฑ ๊ฐ์ ํธ๋ ์ด๋์คํ๋ฅผ ๊ฐ์กฐํฉ๋๋ค.
- ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทผ๋ฒ์ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ๊ณผ ์ต์ข ์ ์ผ๊ด์ฑ์ ์ธก๋ฉด์ ๊ฒฐํฉํ์ฌ ์์ชฝ์ ์ฅ์ ์ ๋ชจ๋ ์ ๊ณตํ ์ ์์ต๋๋ค.
- ์ผ๊ด์ฑ ๋ชจ๋ธ์ ์ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์๊ตฌ์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.